package 力扣.动态规划;

//当 A 的子数组 A[i], A[i+1], ..., A[j] 满足下列条件时，我们称其为湍流子数组：
//
//    若 i <= k < j，当 k 为奇数时， A[k] > A[k+1]，且当 k 为偶数时，A[k] < A[k+1]；
//    或 若 i <= k < j，当 k 为偶数时，A[k] > A[k+1] ，且当 k 为奇数时， A[k] < A[k+1]。
//
//也就是说，如果比较符号在子数组中的每个相邻元素对之间翻转，则该子数组是湍流子数组。
//返回 A 的最大湍流子数组的长度。
public class 最长湍流子数组 {
    public static void main(String[] args) {
        int[] arr={9,9};
        int i = maxTurbulenceSize(arr);
        System.out.println(i);
    }
    public static int maxTurbulenceSize(int[] arr) {
        if (arr.length<2)
            return arr.length;
        int[] dp = new int[arr.length];
        dp[0]=1;
        int res=1;
        int pre=0;
        for (int i = 1; i <arr.length ; i++) {
            int cur=arr[i]-arr[i-1];
            if ((pre>0&& cur<0) || (pre<0&& cur>0)) {
                dp[i] = Math.max(dp[i], dp[i - 1] + 1);
            }
            else if (arr[i]!=arr[i-1]) {
                dp[i] = 2;
            }
            else {
                dp[i]=1;
            }
            pre=cur;
            res=Math.max(res,dp[i]);
        }
        return res;
    }
}
